package sanrenxing.dayEnd.backRepertoryTotal.service.impl;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import sanrenxing.dayEnd.backRepertoryTotal.dao.TrabsactionDao;
import sanrenxing.dayEnd.backRepertoryTotal.domain.CashAccount;
import sanrenxing.dayEnd.backRepertoryTotal.domain.TransactionSettlement;
import sanrenxing.dayEnd.backRepertoryTotal.domain.TransactionSettlementTwo;
import sanrenxing.dayEnd.backRepertoryTotal.service.TrabsactionBiz;

import java.util.List;

/**
 * 功能:交易结算业务层实现类
 * 编写者：
 * 日期：2021
 * 版本：1.0
 */
@Service("TrabsactionBiz")
public class TrabsactionBizImpl implements TrabsactionBiz {
    @Autowired
    private TrabsactionDao trabsactionDao = null;

    /**
     * 分页查询条件
     *
     * @param rows
     * @param pages
     * @param condition
     * @return
     */
    @Override
    public List<TransactionSettlementTwo> findByPages(int rows, int pages, String condition) {
        int start = (pages - 1) * rows;
        return trabsactionDao.findByPage(start, rows, condition);
    }

    /**
     * 按条件统计记录数
     *
     * @param condition 统计条件
     * @return 条件
     */
    @Override
    public int count(String condition) {
        return trabsactionDao.count(condition);
    }

    /**
     * 获取查询条件
     *
     * @param transaction
     * @return 条件字符串
     */
    @Override
    public String getCount(TransactionSettlement transaction) {
        //定义空字符串
        String condition = "";
        //如果交易结算为空
        if (transaction == null) {
            return condition;
        }
        //如果交易方式不为空
        if (transaction.getMay() != null) {
            condition += "and may like '%" + transaction.getMay() + "%' ";
        }
        //如果状态不为空
        if (transaction.getTranStatus() != 0) {
            condition += "and tranStatus=" + transaction.getTranStatus();
        }
        return condition;
    }

    /**
     * 根据证券交易编号删除数据
     *
     * @param tranId 证券交易编号
     * @return 1：删除成功；0：删除失败
     */
    @Override
    public int delete(int tranId) {
        return trabsactionDao.delete(tranId);
    }

    /**
     * 查询所有交易处理数据
     *
     * @return 交易处理数据对象集合
     */
    @Override
    public TransactionSettlement findById(int tranId) {
        return trabsactionDao.findById(tranId);
    }


    @Override
    public List<CashAccount> queryCash() {
        return trabsactionDao.queryCash();
    }

    /**
     * 通过证券编号判断是否为债券
     * @return
     */
    @Override
    public int ifIsBond(String seId) {
        return trabsactionDao.ifIsBond(seId);
    }

    /**
     * 通过债券编号从证券库存中查询该债券数量
     * @param seId
     * @return
     */
    @Override
    public int bondRepositoryCount(String seId) {
        return trabsactionDao.bondRepositoryCount(seId);
    }

    /**
     * 通过证券编号从证券应收应付取得数据条数
     * @param seId
     * @return
     */
    @Override
    public int getBondCount(String seId) {
        return trabsactionDao.getBondCount(seId);
    }

    /**
     * 过证券编号从证券应收应付取得所有债券利息
     * @param seId
     * @return
     */
    @Override
    public Double getBondEveryMoney(String seId) {
        return trabsactionDao.getBondEveryMoney(seId);
    }

    /**
     * 修改证券应收应付中对应该债券每天的利息：减去卖掉的债券利息
     * @param EveryDayMoney
     */
    @Override
    public void updateBondEveryDayMoney(Double EveryDayMoney, String seId) {
        trabsactionDao.updateBondEveryDayMoney(EveryDayMoney,seId);
    }

    /**
     * 在证券应收应付中删除金额为0并且类型为债券利息的数据
     */
    @Override
    public void clearBond() {
        trabsactionDao.clearBond();
    }

    /**
     * 修改交易数据
     *
     * @param transactionSettlement 交易数据对象
     * @return 1：修改成功；0：修改失败
     */
    @Override
    public int update(TransactionSettlement transactionSettlement) {
        return trabsactionDao.update(transactionSettlement);
    }
}
